package com.czxy.domain;

import java.util.HashMap;
import java.util.Map;


public class Cart {
    private Map<String,CartItem> cartMap = new HashMap<>();
    private Double totalPrice;      //总价：所有小计的和

    public Double getTotalPrice() {
        double sum = 0;
        for (CartItem cartItem : cartMap.values()) {
            sum += cartItem.getPrice();
        }
        totalPrice = sum;
        return totalPrice;
    }

    public void addCart(Product product , Integer count) {
        CartItem cartItem = cartMap.get(product.getPid());
        if(cartItem == null) {
            //不存在
            cartItem = new CartItem();
            cartItem.setProduct(product);
            cartItem.setPrice(product.getShopPrice());
            cartItem.setCount(count);
            cartMap.put(product.getPid(), cartItem);
        } else {
            // 已有存在
            Integer newCount = cartItem.getCount() + count;
            cartItem.setCount(newCount);
        }
    }

    /**
     * 清空购物车
     */
    public void clear() {
        cartMap.clear();
    }

    public void updateCart(String pid, Integer count) {
        if(count <= 0) {
            // 删除
            remove(pid);
            return;
        }

        CartItem cartItem = cartMap.get(pid);
        if(cartItem != null) {
            cartItem.setCount(count);
        }
    }

    /**
     * 移除指定商品
     * @param pid
     */
    public void remove(String pid) {
        cartMap.remove(pid);
    }

    public Map<String, CartItem> getCartMap() {
        return cartMap;
    }

    public void setCartMap(Map<String, CartItem> cartMap) {
        this.cartMap = cartMap;
    }

    public void setTotalPrice(Double totalPrice) {
        this.totalPrice = totalPrice;
    }
}
